package com.fang.algorithm.leecode;

/**
 * @author fanglingxiao
 * @version 1.0
 * @description //对于一个有N个整数元素的一维数组，找出它的子数组（数组中下标连续的元素组成的数组）之和的最大值。
 * //下面给出几个例子（最大子数组用粗体表示）：
 * //数组：{ 1, -2, 3,5, -3, 2 }，结果是：8
 * // 数组：{ 0, -2, 3, 5, -1, 2 }，结果是：9
 * // 数组：{ -9, -2,-3, -5, -3 }，结果是：-2
 * @date 2022/1/18 7:17 下午
 **/
public class Test {
    public static void main(String[] args) {
        int[] nums = {-9, -2, -3, -5, -3};
        int result = calcResult(nums);
        System.out.println(result);
    }

    private static int calcResult(int[] nums) {
        int pre = 0, maxAns = nums[0];
        for (int x : nums) {
            pre = Math.max(pre + x, x);
            maxAns = Math.max(maxAns, pre);
        }
        return maxAns;
    }
}
